package com.jintu.portal.controller;

import com.jintu.portal.exception.ServiceException;
import com.jintu.portal.pojo.bean.SystemType;
import com.jintu.portal.pojo.dto.TobUserDto;
import com.jintu.portal.pojo.dto.TobUserReqDto;
import com.jintu.portal.pojo.submit.ResultInfo;
import com.jintu.portal.service.TobUserService;
import com.jintu.portal.utils.UserUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * Created by liyou on 2017/9/22.
 */
@Controller
@RequestMapping("tobUser")
public class TobUserController extends BaseController {

//    @Autowired
//    private CommonUserService commonUserService;
    @Autowired
    private TobUserService tobUserService;
//    @Autowired
//    private CommonService commonService;

//    /**
//     * B端员工登录后的修改密码
//     * @param modifyPwdDto
//     * @param result
//     */
//    @RequestMapping("/modifyPwd")
//    @ResponseBody
//    public ResultInfo modifyPwd(@RequestBody ModifyPwdDto modifyPwdDto, BindingResult result) throws Exception {
//        valid(result);
//        if(!modifyPwdDto.getPwd().equals(modifyPwdDto.getConfirmPwd())) {
//            throw new ServiceException("两次密码输入不一致，请重新输入");
//        }
//        commonUserService.modifyPwd(modifyPwdDto, SystemType.B_APP_SYSTEM);
////        修改成功短信通知
//        SmsUtil.send(modifyPwdDto.getUsername(), MsgType.TOB_MODIFY_PASSWORD);
//        return returnSuccess();
//    }
//
//    /**
//     * B端员工角色切换
//     * @param
//     */
//    @RequestMapping("/roleChange")
//    @ResponseBody
//    public ResultInfo userRoleChange() throws Exception {
//        //Long userId = jsonObject.getLong("userId");
//        Long userId = UserUtil.tobCurrentUser().getUserId();
//        if(userId == null) {
//            throw new ServiceException("缺失必要参数");
//        }
//        Map<String,Object> resultMap = new HashMap<String,Object>();
//        List<TobUserDto> tobUserDtoList = tobUserService.userRoleChange(userId, SystemType.B_APP_SYSTEM);
//        resultMap.put("userList",tobUserDtoList);
//        return returnSuccess(resultMap);
//    }
//
//    /**
//     * B端员工管理（只对管理层）
//     * @param
//     */
//    @RequestMapping("/userList")
//    @ResponseBody
//    public ResultInfo departmentUserList() throws Exception {
//        Long departmentId = UserUtil.tobCurrentUser().getDepartmentId();
//        if(departmentId == null) {
//            throw new ServiceException("缺失必要参数");
//        }
//        List<TobUserDto> tobUserDtoList = tobUserService.departmentUserList(departmentId, SystemType.B_APP_SYSTEM);
//        if(CollectionUtils.isEmpty(tobUserDtoList)){
//            tobUserDtoList = new ArrayList<TobUserDto>();
//        }
//        return returnSuccess(tobUserDtoList);
//    }
//
//    /**
//     * 管理员查看 B端员工详情
//     * @param jsonObject
//     */
//    @RequestMapping("/detail")
//    @ResponseBody
//    public ResultInfo tobUserDetail(@RequestBody JSONObject jsonObject) throws Exception {
//        Long departmentId = jsonObject.getLong("departmentId");
//        Long userId = jsonObject.getLong("userId");
//        Long postId = jsonObject.getLong("postId");
//        if(departmentId == null || userId == null || userId == null) {
//            throw new ServiceException("缺失必要参数");
//        }
//        TobUserDto tobUserDto = tobUserService.tobUserDetail(departmentId,userId,postId,SystemType.B_APP_SYSTEM);
//        return returnSuccess(tobUserDto);
//    }
    /**
     * 点击我的查看详情
     * @param
     */
    @RequestMapping("/myDetail")
    @ResponseBody
    public ResultInfo myDetail(HttpServletRequest request) throws Exception {
        String token = request.getParameter("token");

        Long departmentId = UserUtil.tobCurrentUser1(token).getDepartmentId();
        Long userId = UserUtil.tobCurrentUser1(token).getUserId();
        Long postId = UserUtil.tobCurrentUser1(token).getPostId();
        TobUserDto tobUserDto = tobUserService.tobUserDetail(departmentId,userId,postId, SystemType.B_APP_SYSTEM);
        return returnSuccess(tobUserDto);
    }

//    /**
//     * B端 停用员工
//     * 用户操作类1停用，2启用，3通过，4拒绝，5离职
//     * @param userReqDto
//     */
//    @RequestMapping("/tobOper")
//    @ResponseBody
//    public ResultInfo tobUserOper(@RequestBody TobUserReqDto userReqDto) throws Exception {
//        if(userReqDto == null) {
//            throw new ServiceException("缺失必要参数");
//        }
//        tobUserService.tobUserOper(userReqDto);
//        return returnSuccess();
//    }
//
//    /**
//     * 修改个人头像
//     * @return
//     */
//    @RequestMapping("/uploadFile")
//    @ResponseBody
//    public ResultInfo uploadFile(@RequestParam MultipartFile file) throws Exception {
//        Map<String,Object> resultMap = new HashMap<String,Object>();
//        if(file == null) {
//            throw new ServiceException("缺失必要参数");
//        }
//        Long userId = UserUtil.tobCurrentUser().getUserId();
//        String filePath = tobUserService.uploadFile(userId,file);
//        resultMap.put("filePath",filePath);
//        return returnSuccess(resultMap);
//    }

    /**
     * 修改员工基本信息
     * @return
     */
    @RequestMapping("/updateEmployeeInfo")
    @ResponseBody
    public ResultInfo updateEmployeeInfo(@RequestBody TobUserReqDto tobUserReqDto,HttpServletRequest request) throws Exception {
        String token = request.getParameter("token");

        if(null == tobUserReqDto || null == tobUserReqDto.getUserInfoType()) {
            throw new ServiceException("缺失必要参数");
        }
        tobUserReqDto.setUserId(UserUtil.tobCurrentUser1(token).getUserId());
        tobUserReqDto.setDepartmentId(UserUtil.tobCurrentUser1(token).getDepartmentId());
        TobUserDto tobUserDto = tobUserService.updateEmployee(tobUserReqDto,token);
        return returnSuccess(tobUserDto);
    }

//    /**
//     * B端员工退出
//     */
//    @RequestMapping("/logoff")
//    @ResponseBody
//    public ResultInfo logoff() throws Exception {
//        //Long userId = jsonObject.getLong("userId");
//        Long userId = UserUtil.tobCurrentUser().getUserId();
//        UserUtil.removeTobUser(userId);
//        return returnSuccess();
//    }
//
//    /**
//     * B端员工审核，只有店长才能进行审核,待审核员工集合
//     */
//    @RequestMapping("/pendingUserList")
//    @ResponseBody
//    public ResultInfo pendingUserList() throws Exception {
////        Long departmentId = UserUtil.tobCurrentUser().getDepartmentId();
////        if(departmentId == null) {
////            throw new ServiceException("缺失必要参数");
////        }
//        Long departmentId = 4679L;
//        Map<String,Object> resultMap = new HashMap<String,Object>();
//        List<TobUserDto> pendingUserList = tobUserService.pendingUserList(departmentId, SystemType.B_APP_SYSTEM);
//        if(CollectionUtils.isEmpty(pendingUserList)){
//            pendingUserList = new ArrayList<TobUserDto>();
//        }
//        resultMap.put("pendingUserList",pendingUserList);
//        return returnSuccess(resultMap);
//    }
//
//    /**
//     * B端员工管理（只对管理层）
//     * @param
//     */
//    @RequestMapping("/newUserList")
//    @ResponseBody
//    public ResultInfo newUserList() throws Exception {
////        Long departmentId = UserUtil.tobCurrentUser().getDepartmentId();
////        if(departmentId == null) {
////            throw new ServiceException("缺失必要参数");
////        }
//        Long departmentId = 4679L;
//        Map<String,Object> resultMap = new HashMap<String,Object>();
//        List<TobUserDto> tobUserDtoList = tobUserService.departmentUserList(departmentId, SystemType.B_APP_SYSTEM);
//        if(CollectionUtils.isEmpty(tobUserDtoList)){
//            tobUserDtoList = new ArrayList<TobUserDto>();
//        }
//        List<TobUserDto> pendingUserList = tobUserService.pendingUserList(departmentId, SystemType.B_APP_SYSTEM);
//        if(CollectionUtils.isEmpty(pendingUserList)){
//            resultMap.put("pendingSize",0);
//        }else{
//            resultMap.put("pendingSize",pendingUserList.size());
//        }
//        resultMap.put("userList",tobUserDtoList);
//        return returnSuccess(resultMap);
//    }
//
//    /**
//     * 关于瀑布圈子
//     * @param
//     */
//    @RequestMapping("/aboutOur")
//    @ResponseBody
//    public ResultInfo aboutOur() throws Exception {
//        TStaticData staticData = commonService.findDataByCodeVal(StaticDataConstants.APP_ABOUT_OUR,StaticDataConstants.APP_PUBU_VAL);
//        AppAboutDto appAboutDto = JsonUtil.fromJson(staticData.getExtendParams(), AppAboutDto.class);
//        if(null == appAboutDto){
//            throw new ServiceException("获取关于瀑布圈子信息异常！");
//        }
//        return returnSuccess(appAboutDto);
//    }
}
